package se.webbzon.boltzmann.game.object.waypoint;

public interface PathMovable {

	/** Returns the duration (in number of steps) of a full program cycle. **/
	int getCycleDuration();

	/** Returns the program cycle time. The returned time will be in the
	 * interval 0 to getCycleDuration(). **/
	int pos();

	/** Returns true if the PathMovable is moving in the proper direction
	 * defined by the structure of the given waypoint path.**/
	boolean isPlaying();

	/** Sets the the program cycle time. The time must be in the interval
	 * 0 to getCycleDuration(). **/
	void seek(int i);

	/** Returns true if the PathMovable is moving in the opposite direction
	 * defined by the structure of the given waypoint path.**/
	boolean isRewinding();

	/** Makes the PathMovable move in the opposite direction defined by the
	 * structure of the given waypoint path. **/
	void rewind();

	/** Makes the PathMovable move in the proper direction defined by the
	 * structure of the given waypoint path. **/
	void play();
	
	/** Stops the PathMovable from moving. **/
	void stop();

}
